using System;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using System.Collections.Generic;
using Sinacor.Infra.Common;
using Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Bovespa.Movimento.ControleMovimentoOrdens;

namespace Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Translator.DataContractToModel
{
    /// <summary>
    /// Traduz um contrato de dados em um modelo
    /// </summary>
    public class ControleMovimentoOrdens
    {
        public ControleMovimentoOrdens() { }

		/// <summary>
        /// ToInformacoesMovimento
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
		public Model.InformacoesMovimento ToInformacoesMovimento(InformacoesMovimentoResponse from)
        {
            Model.InformacoesMovimento retorno = new Sinacor.UI.Bovespa.ManutencaoOrdens.Model.InformacoesMovimento();

            if (from == null)
                return null;

            retorno.DataMovimento = from.DataMovimento;
            retorno.DataVersao = from.DataVersao;

            switch (from.EstadoMovimento)
            {
                case TipoMovimento.Abertura:
                    retorno.EstadoMovimento = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMovimento.Abertura;
                    break;
                case TipoMovimento.Fechamento:
                    retorno.EstadoMovimento = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMovimento.Fechamento;
                    break;
                case TipoMovimento.Reabertura:
                    retorno.EstadoMovimento = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMovimento.Reabertura;
                    break;
                case TipoMovimento.ProcessoFechamento:
                    retorno.EstadoMovimento = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.TipoMovimento.ProcessoFechamento;
                    break;                
            }

            return retorno;
		}

	}

}